package com.ciccwm.auth.model;

import lombok.Data;

/**
 * OAuth2令牌响应.
 * 包含访问令牌、刷新令牌、令牌类型和过期时间等信息.
 */
@Data
public class OAuth2TokenResponse {
    /**
     * 访问令牌.
     */
    private String accessToken;

    /**
     * 刷新令牌.
     */
    private String refreshToken;

    /**
     * 令牌类型.
     */
    private String tokenType = "Bearer";

    /**
     * 过期时间（秒）.
     */
    private long expiresIn;

    /**
     * 作用域.
     */
    private String scope;

    /**
     * 用户ID.
     */
    private Long userId;

    /**
     * 用户名.
     */
    private String username;

    /**
     * 构造函数.
     */
    public OAuth2TokenResponse() {
    }

    /**
     * 构造函数.
     *
     * @param accessToken 访问令牌
     * @param refreshToken 刷新令牌
     * @param expiresIn 过期时间（秒）
     * @param scope 作用域
     */
    public OAuth2TokenResponse(String accessToken, String refreshToken, long expiresIn, String scope) {
        this.accessToken = accessToken;
        this.refreshToken = refreshToken;
        this.expiresIn = expiresIn;
        this.scope = scope;
    }

    /**
     * 构造函数.
     *
     * @param accessToken 访问令牌
     * @param refreshToken 刷新令牌
     * @param expiresIn 过期时间（秒）
     * @param scope 作用域
     * @param userId 用户ID
     * @param username 用户名
     */
    public OAuth2TokenResponse(String accessToken, String refreshToken, long expiresIn,
                             String scope, Long userId, String username) {
        this(accessToken, refreshToken, expiresIn, scope);
        this.userId = userId;
        this.username = username;
    }
} 
